package com.example.nirvana.dataStructure.algorithm;

import com.example.nirvana.dataStructure.TreeNode;

/**
 * 翻转二叉树
 */
public class InvertTree {
    /**
     * 将整棵树的节点翻转
     *
     * @param root
     * @return
     */
    TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }

        /**** 前序遍历位置 ****/
        // root 节点需要交换它的左右子节点
        TreeNode temp = root.left;
        root.left = (root.right);
        root.right = temp;

        // 让左右子节点继续翻转它们的子节点
        invertTree(root.left);
        invertTree(root.right);

        return root;
    }
}
